package com.shihb.chapter02function

/**
 * 递归的练习
 */
object Demo02Recursion {
  def main(args: Array[String]): Unit = {
//    println(fbn(7))
//    println(f(2))
    println(peach(1))
  }

  /**
   * 实现斐波那契数
   */
  def fbn(index: Int): Int = {
    if (index == 2 || index == 1) 1 else fbn(index - 1) + fbn(index - 2)
  }

  /**
   * 已知f(1)=3,f(n)=2f(n-1)+1
   * 求f(n)的值
   */
  def f(n: Int): Int = {
    if (n == 1) 3 else 2 * f(n - 1) + 1
  }

  /**
   * 猴子第一天摘下若干个桃子，当即吃了一半，又多吃了一个。
   * 第二天早上又将剩下的桃子吃掉一半，又多吃了一个。
   * 以后每天早上都吃了前一天剩的一半,再多吃一个。
   * 到第10天早上想再吃时，见只剩下一个桃子了，
   * 求第一天共摘了多少桃子？
   * 分析：
   * day10=1
   * day09=(day10+1)*2
   * day08=(day09+1)*2
   *
   */
  def peach(day:Int): Int ={
    if(day==10) 1 else (peach(day+1)+1)*2
  }

}
